Loading and Playing Sounds and Music¶
Architecture¶
The implementation of the sound system in Panda3d allows for a division of audio into two categories - Sound Effects and Music. This division is only a convenience for programmers as Panda3d allows these two audio groups to be treated individually. These differences are explained on the next page.
Basics¶
Loading a Sound¶
Loading sound is done through the
Loader class by supplying the
path to the sound file as a parameter for
loadSfx(). Here’s an example:
base = ShowBase()
mySound = base.loader.loadSfx("path/to/sound_file.ogg")
These will return an object of the type
AudioSound. It is necessary to put
the extension in the sound filename.
Playing/Stopping a Sound¶
To play sounds you can do the following:
mySound.play()
To stop a sound:
mySound.stop()
Querying Sound Status¶
To check the status of a sound, call
status():
status = mySound.status()
status() returns a constant
depending on the status of the sound:
| Constant | Status |
|---|---|
| AudioSound.BAD | The sound is not working properly. |
| AudioSound.READY | The sound is not currently playing and is ready to be played on command. |
| AudioSound.PLAYING | The sound is currently playing. |
Example usage of this would be to stop a sound from playing only if it’s currently playing.
if mySound.status() == mySound.PLAYING:
mySound.stop()
Setting Volume¶
The volume can be set between 0 and 1 and will linearly scale between these.
mySound.setVolume(0.5)
Panning a Sound¶
You can change the balance of a sound. The range is between -1.0 to 1.0. Hard left is -1.0 and hard right is 1.0.
mySound.setBalance(-0.5)
Extra Note¶
If Panda3D is running from an interactive prompt,
update() after you play a sound.
base.sfxManagerList[n].update()
This is because the update()
command is called every frame to reset a sound’s channel.
In interactive mode, Panda3D’s frame update is suspended and does not run automatically.